In wireless communication systems, block interleaving may be used to combat channel fading. Generally, interleaving re-orders bits of information to achieve time diversity of an original sequence of bits (i.e., interleaving changes the order of at least some bits in an original sequence with respect to time). When a transmitted interleaved signal is received, de-interleaving may be used to re-order the transmitted sequence back to the original sequence.
A variety of interleaving schemes exist in different wireless standards. Even in the same standard, there may still be a variety of coding schemes that use different interleaving algorithms. For example, the GSM/GPRS/EDGE standard has more than 15 different interleaving algorithms, including various look-up tables (LUTs). Interleaving algorithms may vary in block size (i.e., the amount of bits in an index), level of interleaving, use of bit pruning, and other considerations as will later be described.
Most interleaver/de-interleaver implementations may typically be tailored for use with a specified algorithm and may not easily be used with other algorithms. Being able to implement a plurality of different algorithms with one hardware and/or software solution is desirable. Furthermore, finding a multi-standard interleaving solution that does not require large amounts of memory and/or complex hardware is desirable.